package cn.kais.drawer.bean;

import cn.kais.drawer.UnitTools;
import cn.kais.drawer.UnitUtil;
import com.alibaba.fastjson.JSONObject;

import java.awt.*;

/**
 * 色块： 方形、圆形
 * 不考虑 边框
 */
public class BeanBlock extends BeanBasic {

    public int top;
    public int left;
    public int width;
    public int height;

    public Color bColor; // 背景颜色

    public int borderWidth; // 边框宽度
    public Color borderColor; // 边框颜色
    public JSONObject borderRadius; // 圆角

    public Graphics2D sd; // 绘制

    public BeanBlock(Graphics2D sd, JSONObject com) {
        this.sd = sd;
        this.top = com.getInteger("top");
        this.left = com.getInteger("left");
        this.width = com.getInteger("width");
        this.height = com.getInteger("height");

        this.bColor = UnitUtil.toColor(com.getString("bgColor"));

        this.borderWidth = com.getIntValue("borderWidth");
        this.borderColor = UnitUtil.toColor(com.getString("borderColor"));
        this.borderRadius = com.getJSONObject("borderRadius");

        this.create();
    }

    private void create() {
        // 内部
//        sd.setColor(Color.BLUE);
//        sd.fillRect(this.left, this.top, this.width, this.height); // 矩形 有填充
//        sd.drawRect(this.left, this.top, this.width, this.height); // 矩形 无填充

//        sd.fillOval(this.left, this.top, this.width, this.height); // 圆形 有填充
//        sd.drawOval(this.left, this.top, this.width, this.height); // 圆形 无填充

        // 边框
//        if (this.borderWidth > 0) {
//            BasicStroke stroke = new BasicStroke(this.borderWidth);
//            sd.setStroke(stroke);
//            sd.setColor(this.borderColor);
//            sd.drawRect(this.left, this.top, this.width, this.height);
//        }

//        System.out.println(this.borderRadius.toJSONString());


        int LT = borderRadius.getIntValue("leftTop");       // 左上
        int LB = borderRadius.getIntValue("leftBottom");    // 左下
        int RT = borderRadius.getIntValue("rightTop");      // 右上
        int RB = borderRadius.getIntValue("rightBottom");   // 右下
        int mRadius = UnitTools.onGetMaxRadius(LT, LB, RT, RB) * 2;         // 取最大圆角

        sd.setColor(this.bColor);
        sd.fillRoundRect(this.left, this.top, this.width, this.height, mRadius, mRadius);

        if (this.borderWidth > 0) {
            sd.setColor(this.borderColor);
            sd.setStroke(new BasicStroke(this.borderWidth)); // 边框宽度为5
            sd.drawRoundRect(this.left, this.top, this.width, this.height, mRadius, mRadius);
        }


//        int wRadius = this.width / 2;   // 宽半径
//        int hRadius = this.height / 2;  // 高半径
//        System.out.println(mRadius);
//
//        sd.setColor(this.bColor);
//        sd.fill(new RoundRectangle2D.Double(this.left, this.top, this.width, this.height, mRadius, mRadius));
//        if (LT <= 0) { // 恢复左上角为直角
//            System.out.println("恢复左上角为直角");
//            sd.fillRect(this.left, this.top, wRadius, hRadius);
//        }
//        if (LB <= 0) { // 恢复左下角为直角
//            System.out.println("恢复左下角为直角");
//            sd.fillRect(this.left, this.top + hRadius, wRadius, hRadius);
//        }
//        if (RT <= 0) { // 恢复右上角为直角
//            System.out.println("恢复右上角为直角");
//            sd.fillRect(this.left + wRadius, this.top, wRadius, hRadius);
//        }
//        if (RB <= 0) { // 恢复右下角为直角
//            System.out.println("恢复右下角为直角");
//            sd.fillRect(this.left + wRadius, this.top + hRadius, wRadius, hRadius);
//        }


        // 圆角半径
//        int arcWidth = 200;
//        int arcHeight = 200;
//
//        // 圆角矩形的位置和大小
//        int x = 20;
//        int y = 500;
//        int width = 200;
//        int height = 100;
//
//        // 绘制圆角矩形（无填充）
//        sd.setColor(Color.green);
////        sd.drawRoundRect(x, y, width, height, arcWidth, arcHeight);
//        sd.fill(new RoundRectangle2D.Double(x, y, width, height, arcWidth, arcHeight));
//
//        // 设置边框颜色和宽度
//        sd.setColor(Color.BLUE);
//        sd.setStroke(new BasicStroke(2)); // 边框宽度为5
//        sd.drawRoundRect(x, y, width, height, arcWidth, arcHeight);

    }

}